简介
- 日常开发中常使用动画,恰当地使用动画有助于提高用户体验。
- UIView动画事务提供了大量简单的接口来实现种类繁多的动画效果。
- UIView动画事务多用于执行隐式动画:
frame:设置视图大小及位置 bounds:设置视图矩形大小 center:设置视图中心点位置 transform:设置视图的纺射变幻属性(缩放、旋转) alpha:设置视图的透明度
UIView动画事务基本要素
- 持续时间:Duration,描述了动画执行的总时间。
- 线性规律:Curve,描述了动画的执行方式,展示的效果。
- 动画类型:通过改变视图属性,生成隐式动画效果。
- 回调方法:动画委托方法或选取器方法,可以监视动画执行状态,并在相应状态执行自定义操作。
- 其他配置:UIView动画事务提供了更多的配置接口,使动画效果更多样化。
UIView动画事务的初始化及配置
- 一般方法配置动画事务
1 | +(void)beginAnimations:(NSString *)animationID context:(void *)context; |
- 使用block代码块实现动画事务
1 | +(void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations; |
UIView转场动画及委托回调配置
- +(void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache;
UIViewAnimationTransition: UIViewAnimationTransitionNone:无转场动画类型 UIViewAnimationTransitionFlipFromLeft:页面从左向右翻转 UIViewAnimationTransitionFlipFromRight:页面从右向左翻转 UIViewAnimationTransitionCurlUp:向上翻页 UIViewAnimationTransitionCurlDown:向下翻页
1 | 设置委托 |
- Tips:
如果需要实现组合动画,对于动画事务一般生成方法,需要设置代理,并且声明回调方法,在回调方法中根据 AnimationId 判断当前结束的是哪一个动画,然后根据需求执行下一个动画方法;而对于动画事务block生成方法,无需声明回调方法,直接在 completion 块中执行动画结束后的操作即可(即执行下一个动画)。
一般动画事务生成方法
1 | #import "UIViewAnimationsViewController.h" |
UIImageView动画
- UIImageView是图片展示视图,除了展示图片功能之外,也可以用于实现动画效果。
动画配置
animationImages:设置动画图片数组 animationDuration:设置动画持续时长 animationRepeatCount:设置动画重复次数,默认为0无限次重复
常用方法
开始执行动画 - (void)startAnimating; 结束执行动画 - (void)stopAnimating;
UIImageView动画代码案例
- 初始化UIImageView动画
1 | - (void)initializeImageAnimations { |
- 触摸拖动_imageAnimationsView视图方法
1 | // 触摸移动 |
动画事件
有时需要在某一个视图执行动画的过程中(比如位置移动)实现点击效果,如果通过添加手势的方式,会发现,即使开启了用户交互userInteractionEnabled也不会达到预期的效果,这是由于UIView动画事务执行的是隐式动画,因此不能通过手势的方式,而应该通过触摸的方式处理逻辑,此处模拟动画在移动过程中实现点击效果,animatingView为添加UIView动画事务移动的的动画。直接上关键代码;
1 | #pragma mark *** Touches *** |